---
title: Configuration
summary: Environment API settings, database configurations, and app.config surface for OnBaseKeywordSync.
status: draft
owner: Documents
last_reviewed: 2026-09-17
---

# Configuration

Configuration is retrieved at runtime from the Environment API through `IEnvironmentService`. There are no database connections and no secure/encrypted settings anywhere in this application. Nine distinct application-consumed setting keys exist: seven Environment API keys (across eight call sites) and two `appSettings` keys.

## Environment API settings

| Key | Retrieved by | Consuming class | Secure | Varies by environment | Purpose |
| --- | --- | --- | --- | --- | --- |
| `OnBaseKeywordSync.onbaseasync` | `GetConfigSetting<bool>` | `OnBaseKeywordSyncRunner.Execute` | No | No | Whether updates are sent to OnBase asynchronously (declared `true` on every track) |
| `imagingapiurl` | `GetConfigSetting` | `ImagingApiClient.BuildImagingApiClient` | No | Yes | Imaging API base URL; not declared in this repository — resolved from shared/global environment settings** |
| `onbasekeywordsync.imagingClientTimeoutSeconds` | `GetConfigSetting<int>` | `ImagingApiClient.BuildImagingApiClient` | No | Yes | Imaging API response timeout in seconds (`300` most tracks, `5400` on `np12`, `7200` on `np17`/`prod`) |
| `OnBaseKeywordSync.getdocumentcount` | `GetConfigSetting` (string, query string) | `ImagingApiClient.GetUnprocessedKeywordSyncs` | No | No | Whether to get and log the total count of docs to update |
| `OnBaseKeywordSync.getdocumentcount` | `GetConfigSetting` + `Convert.ToBoolean` | `KeywordUpdater.PerformUpdate` | No | No | Same key, consumed a second way (see risk below) |
| `OnBaseKeywordUpdateServiceUrl` | `GetConfigSetting` | `OnBaseKeywordSyncClient` constructor | No | Yes | OnBase SOAP endpoint address; not declared in this repository** |
| `OnBaseKeywordSync.onbaseclientsleepmilliseconds` | `GetConfigSetting<int>` | `OnBaseKeywordSyncClient.UpdateKeyword` | No | No | Milliseconds to sleep between OnBase keyword-update calls (declared `500` on every track) |
| `OnBaseKeywordSync.customquerymappings` | `GetConfigSetting` | `OnBaseKeywordSyncClient.GetCustomQueryName` | No | Yes | `DTG\|custom query` pairs, `~`-delimited; doc-type-group coverage differs per track |

## Database configurations

None. No `DatabaseConfig` is passed to `RegisterCommonDependencies` in `RegisterAppDependencies`, so no `IUnitOfWork` is ever registered or resolved.

## app.config settings

### appSettings

| Key | Value | Read by | Purpose |
| --- | --- | --- | --- |
| `ApplicationHost` | `np12` | `EnvironmentServiceBase` | Environment API host resolution†; committed as a non-production track and expected to be substituted at release time* |
| `debugLogFile` | `C:\temp\OnBaseKeywordSync_Debug.log` | `Extensions` static constructor, `Extensions.Log`, `Extensions.LogError` | Debug-only log tee path, truncated at every process start |

### Custom configuration sections

| Section | Purpose |
| --- | --- |
| `system.serviceModel` | `basicHttpBinding` binding `BasicHttpBinding_HylandOutBoundContract` (all defaults) and a client endpoint of the same name for contract `OnBase.HylandOutBoundContract` with no `address` attribute — the runtime address comes from `OnBaseKeywordUpdateServiceUrl` |
| `startup` | `supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"` |

No `<connectionStrings>` element and no `<oracle.manageddataaccess.client>` section exist.

### Assembly binding redirects

| Assembly | Redirected to | Note |
| --- | --- | --- |
| `Newtonsoft.Json` | `8.0.0.0` | Redirect range `0.0.0.0-8.0.0.0`; the package is pinned at 8.0.3 (2016-era) |

## Log file destinations

Log outputs are resolved from **machine-level environment variables** `file0`–`file4`, scanned by `ConsoleLogService` at construction. Each variable's value is a log file path.† The application registers no log file explicitly and assigns no role to any specific id — every message goes through `Write`/`WriteError`, which fan out to all registered writers†. Whether any of these variables is set on the scheduled host is not determinable from the repository.**

| Environment variable | Log id | Content written by this application |
| --- | --- | --- |
| `file0`–`file4` | `LogType.File0`–`LogType.File4` | Not used — the application assigns no specific role to any id; whatever is registered receives every `Write`/`WriteError` message |

## Environment variance

| Setting | global | np12 | np17 / prod | Notes |
| --- | --- | --- | --- | --- |
| `OnBaseKeywordSync.onbaseasync` | `true` | `true` | `true` | Declared `true` on all 25 tracks including `prod` |
| `OnBaseKeywordSync.getdocumentcount` | `false` | `false` | `false` | Declared `false` on all 24 well-formed tracks; `enttest8` is malformed (see [Tech debt](tech-debt.md)) |
| `OnBaseKeywordSync.onbaseclientsleepmilliseconds` | `500` | `500` | `500` | Declared `500` on all 24 well-formed tracks; `enttest8` is malformed |
| `OnBaseKeywordSync.customquerymappings` | Includes `3P`, `LEGAL` | varies | Includes `3P`, `LEGAL` | Lower environments omit `3P` and/or `LEGAL` entries |
| `onbasekeywordsync.imagingClientTimeoutSeconds` | `300` | `5400` | `7200` | Varies materially by track |
| `imagingapiurl` | Unknown** | Unknown** | Unknown** | Not declared in this repository — resolved from shared/global environment settings |
| `OnBaseKeywordUpdateServiceUrl` | Unknown** | Unknown** | Unknown** | Not declared in this repository |
| `ApplicationHost` | n/a | `np12` (committed) | Unknown* | Committed as `np12`; expected to be substituted per deployment, no transform file exists in the repository |
| `debugLogFile` | `C:\temp\OnBaseKeywordSync_Debug.log` | same | same | Local developer path, not a deployed concern |

## Related documentation
- [Application index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Run lifecycle](run-lifecycle.md)
- [Arguments](arguments.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Operational runbook](operational-runbook.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `†` are derived from dependency library documentation via the Legends CLI. Statements marked with `*` were inferred from code structure or contextual evidence. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `OnBaseKeywordSync/App.config`
- `OnBaseKeywordSync/Program.cs`
- `OnBaseKeywordSync/Extensions.cs`
- `OnBaseKeywordSync/OnBaseKeywordSyncRunner.cs`
- `OnBaseKeywordSync/Services/ImagingApiClient.cs`
- `OnBaseKeywordSync/Services/KeywordUpdater.cs`
- `OnBaseKeywordSync/Services/OnBaseKeywordSyncClient.cs`
- `environmentsettings/settings.yml`
- `Pipelines/release.yml`
